---@meta _

---@class SpellStatus-1.0 法术状态
---[文档](https://web.archive.org/web/20061030220332/http://wowace.com/wiki/SpellStatus-1.0)
local SpellStatus = {}

--[ 事件 ]

---施展开始
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
function SpellStatus:SpellStatus_SpellCastCastingStart(id, name, rank, fullName, castStartTime, castStopTime, castDuration) end

---施展改变
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
---@param castDelay number 施法延迟
---@param castDelayTotal number 施法总延迟
function SpellStatus:SpellStatus_SpellCastCastingChange(id, name,  rank, fullName, castStartTime, castStopTime, castDuration, castDelay, castDelayTotal) end

---施展完成
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
---@param castDelayTotal number 施法总延迟
function SpellStatus:SpellStatus_SpellCastCastingFinish(id, name, rank, fullName, castStartTime, castStopTime, castDuration, castDelayTotal) end

---瞬间
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
function SpellStatus:SpellStatus_SpellCastInstant(id, name, rank, fullName) end

---失败
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param isActiveSpell boolean 是否主动施法
---@param UIEM_Message string 施法失败消息
---@param CMSFLP_SpellName string 施法失败消息
---@param CMSFLP_Message string 施法失败消息
function SpellStatus:SpellStatus_SpellCastFailure(id, name, rank, fullName, isActiveSpell, UIEM_Message, CMSFLP_SpellName, CMSFLP_Message) end

---引导开始
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
---@param action number 施法动作
function SpellStatus:SpellStatus_SpellCastChannelingStart(id, name, rank, fullName, castStartTime, castStopTime, castDuration, action) end

---引导改变
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
---@param action number 施法动作
---@param castDisruption number 施法中断
---@param castDisruptionTotal number 施法总中断
function SpellStatus:SpellStatus_SpellCastChannelingChange(id, name, rank, fullName, castStartTime, castStopTime, castDuration, action, castDisruption, castDisruptionTotal) end

---引导完成
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param castStartTime number 施法开始时间
---@param castStopTime number 施法结束时间
---@param castDuration number 施法持续时间
---@param action number 施法动作
---@param castDisruptionTotal number 施法总中断
function SpellStatus:SpellStatus_SpellCastChannelingFinish(id, name, rank, fullName, castStartTime, castStopTime, castDuration, action, castDisruptionTotal) end

---取消光环（效果）
---@protected
---@param id number 法术标识
---@param name string 法术名称
---@param rank string 法术等级
---@param fullName string 法术全名
---@param time number 施法时间
function SpellStatus:SpellStatus_SpellCastCancelAura(id,name, rank, fullName, time) end

--[ 方法 ]

---报告
function SpellStatus:Report() end

---是否使用
---@return boolean is 是否
function SpellStatus:IsUsing() end

---是否准备
---@return boolean is 是否
function SpellStatus:IsPreparing() end

---是否施展
---@return boolean is 是否
function SpellStatus:IsCasting() end

---是否引导
---@return boolean is 是否
function SpellStatus:IsChanneling() end

---是否下一个近战
---@return boolean is 是否
function SpellStatus:IsNextMeleeing() end

---是否施展或引导
---@return boolean is 是否
function SpellStatus:IsCastingOrChanneling() end

---是否准备或施展或引导
---@return boolean is 是否
function SpellStatus:IsPreparingOrCastingOrChanneling() end

---是否自动重复
---@return boolean is 是否
function SpellStatus:IsAutoRepeating() end

---是否魔杖
---@return boolean is 是否
function SpellStatus:IsWanding() end

---是否攻击
---@return boolean is 是否
function SpellStatus:IsAttacking() end

---是否战斗
---@return boolean is 是否
function SpellStatus:IsCombating() end

---是激活法术
---@param spellId number 法术标识
---@param spellName string 法术名称
---@return boolean is 是否
function SpellStatus:IsActiveSpell(spellId, spellName) end

---取激活法术数据
---@return number id 法术标识
---@return string name 法术名称
---@return string rank 法术等级
---@return string fullName 法术全名
---@return number castStartTime 施法开始时间
---@return number castStopTime 施法结束时间
---@return number castDuration 施法持续时间
---@return number action 施法动作
function SpellStatus:GetActiveSpellData() end

---取激活法术名称
---@return string name 法术名称
function SpellStatus:GetActiveSpellName() end

---取下一个近战法术数据
---@return number id 法术标识
---@return string name 法术名称
---@return string rank 法术等级
---@return string fullName 法术全名
function SpellStatus:GetNextMeleeSpellData() end